import { ElMessage } from 'element-plus'
import useClipboard from 'vue-clipboard3'
const { toClipboard } = useClipboard()
/**
 * 首字母大写
 * @param {*} input 字符串
 * @param {*} splitStr 分隔符
 * @returns
 */
export function toProperCase(input, splitStr) {
  // 将输入字符串转换为小写，并用空格分隔每个单词
  const words = input.toLowerCase().split(splitStr)

  // 转换每个单词为大驼峰形式
  const camelCaseWords = words.map((word) => {
    return word.replace(/\b(\w)/g, (match, p1) => p1.toUpperCase())
  })

  // 将数组合并为一个大驼峰形式的字符串并返回
  return camelCaseWords.join('')
}

// 小驼峰
export function toCamelCase(str) {
  return str.replace(/[-_](\w)/g, (_, c) => c.toUpperCase())
}

// 首字母大写
export function capitalizeFirstLetter(string) {
  return string.replace(/^./, (match) => match.toUpperCase())
}

// 点击复制
export async function copyText(copyContent) {
  try {
    await toClipboard(copyContent)
    //成功要做的事
    ElMessage({
      message: '复制成功：' + copyContent,
      type: 'success'
    })
  } catch (e) {
    ElMessage.error('复制失败', e)
  }
}
// 获取剪切板内容
export async function getClipboardContent() {
  try {
    const text = await navigator.clipboard.readText()
    alert(text)
    console.log('Pasted content: ', text)
    return text
  } catch (err) {
    alert(err)
    console.error('Failed to read clipboard contents: ', err)
    return null
  }
}
// 替换最后一个指定字符
export function replaceLastChar(str, oldChar, newChar) {
  const regex = new RegExp(oldChar + '(?=[^' + oldChar + ']*$)')
  return str.replace(regex, newChar)
}

// 占位符处理
export function placeholder(str, data) {
  if (!str) {
    return
  }
  // 匹配非嵌套的${}占位符（支持包含.的键名）
  const pattern = /\${([^{}]+?)}/g

  return str.replace(pattern, (match, key) => {
    // 处理深层对象属性（如data.user.name）
    const value = key
        .split('.')
        .reduce((acc, k) => (acc !== null && acc !== undefined ? acc[k] : acc), data)

    // 返回替换值或保留原占位符（根据场景需求选择）
    return value !== undefined ? value : match
  })
}
